/*
 * Estado
 *
 *  sin P        listarTarjetaCredito - Esteban
 *  sin P        listarPlanesPago - Esteban
 */

package gestores.pagina;

import dal.CampaniaDAL;

import excepciones.AvwException;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;

import negocio.CampaniaWeb;

import negocio.PlanTarjeta;
import negocio.Tarjeta;

import util.Utiles;

public class GestorCalcularCuota {
    static final Logger logger = 
        Utiles.iniciarLogger("GestorCalcularCuota", false);

    /**
     * Constructor
     */
    public GestorCalcularCuota() {
    }

    /**
     * Retorna un array de las tarjetas de credito asignadas a la campania,
     * especificando los siguientes datos de la tarjeta: tarCodigo y tarNombre.
     * @param camCodigo
     * @return
     */
    public static ArrayList<HashMap> listarTarjetasCreditos(String camCodigo)throws NullPointerException {
        
        CampaniaWeb campaniaWeb = new CampaniaWeb(camCodigo);
        ArrayList<HashMap> tarjetas = new ArrayList<HashMap>();

        try {
            for (Tarjeta tarjeta: 
                CampaniaDAL.listarTarjetasCreditoPorCampania(campaniaWeb)) {
                HashMap tarjetaHash = new HashMap();
                tarjetaHash.put("tarCodigo", tarjeta.getTarCodigo());
                tarjetaHash.put("tarNombre", tarjeta.getTarNombre());
                tarjetas.add(tarjetaHash);

            }
        } catch (AvwException e) {
            logger.log(Level.SEVERE, e.getMensaje(), e);
        }
        return tarjetas;
    }

    /**
     * Retorna un array con los planes de tarjeta y valor de la cuota disponible para la campania 
     * y la tarjeta pasada por parametros, con los siguientes datos: 
     * "cantidadCuotas" cantidad de cuotas y "valorCuota" valor de la cuota.
     * @param camCodigo
     * @param tarCodigo
     * @param monto
     * @return
     */
    public static ArrayList<HashMap> listarPlanesPago(String camCodigo, 
                                                      String tarCodigo, 
                                                      String monto)throws NullPointerException {
        CampaniaWeb campaniaWeb = new CampaniaWeb(camCodigo);
        Tarjeta tarjeta = new Tarjeta(tarCodigo);
        ArrayList<HashMap> planes = new ArrayList<HashMap>();
        ArrayList<PlanTarjeta> planTarjetas = new ArrayList<PlanTarjeta>();
        
        try {
            planTarjetas = 
                    CampaniaDAL.obtenerPlanesTarjetaPorCampaniaYTarjeta(campaniaWeb, 
                                                                       tarjeta);
            for (PlanTarjeta plan: planTarjetas) {
                HashMap planHash = new HashMap();
                planHash.put("cantidadCuotas", plan.getPltCantidadCuotas());
                planHash.put("valorCuota", Float.parseFloat(monto) / plan.getPltCantidadCuotas());
                planes.add(planHash);
            }
        } catch (AvwException e) {
            logger.log(Level.SEVERE, e.getMensaje(), e);
        }
        return planes;
    }
}
